package done.easy_801_900;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

/**
 * 852. Peak Index in a Mountain Array 山脉数组的峰顶索引
 * <p>
 * 我们把符合下列属性的数组 A 称作山脉：
 * A.length >= 3
 * 存在 0 < i < A.length - 1 使得
 * A[0] < A[1] < ... A[i-1] < A[i]
 * A[i] > A[i+1] > ... > A[A.length - 1]
 * <p>
 * 给定一个确定为山脉的数组，返回任何满足
 * A[0] < A[1] < ... A[i-1] < A[i]
 * A[i] > A[i+1] > ... > A[A.length - 1]
 * 的 i 的值。
 * <p>
 * 示例 1：
 * 输入：[0,1,0]
 * 输出：1  （注意：返回的是索引不是值）
 * <p>
 * 示例 2：
 * 输入：[0,2,1,0]
 * 输出：1  （注意：返回的是索引不是值）
 *
 * @author 大硕
 * 2019-04-03 12:19 AM
 **/
@Slf4j
public class PeakIndexInAMountainArray {

    @SuppressWarnings("all")
    public int peakIndexInMountainArray(int[] A) {
        // 190403 first
        return -1;
    }

    @Test
    public void test() {
        int[] A = new int[]{0, 2, 4, 5, 10, 8, 7, 6, 5, 4, 3, 1, 0};
        int res = peakIndexInMountainArray(A);
        log.info("index:{} -> value:{}", res, A[res]);
    }
}





























/*
public int peakIndexInMountainArray(int[] A) {
    //二分，先找到mid，如果A[mid+1]>A[mid],那么峰顶必然在mid+1到A.length内
    int left = 0;
    int right = A.length-1;

    while (left + 1 < right) {
        int mid = left + (right-left) / 2;
        if (A[mid + 1] > A[mid]) {
            left = mid + 1;
        } else {
            right = mid;
        }
    }
    return (left==A.length-1 || A[left]>A[left+1])?left:right;
}
*/
